package com.jiangjiang.eshop.order.service;

import com.jiangjiang.eshop.order.dto.OrderInfoDTO;

import java.util.List;

/**
 * @ClassName OrderFacadeService
 * @Description 订单对外接口
 * @Author jhw
 * @Date 2021/5/12 11:34
 * @Version 1.0
 **/
public interface OrderService {

    /**
     * 通知订单中心,"订单发表评论" 事件发生了
     *
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informPublishCommentEvent(Long orderId);

    /**
     * 从订单中心获取,确认收获时间超过7天，而且还没有发表评论的订单
     *
     * @return 订单信息DTO集合
     */
    List<OrderInfoDTO> listNotPublishedCommentOrders();

    /**
     * 通知订单中心，"订单批量发表评论"事件发生了
     * @param orderIds 订单id集合
     * @return 结果集
     */
    Boolean informBatchPublishCommentEvent(List<Long> orderIds);

    /**
     * 通知订单中心，“商品完成发货”事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informGoodsDeliveryFinishedEvent(Long orderId);

    /**
     * 通知订单中心，“退货工单审核不通过”事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informReturnGoodsWorksheetRejectedEvent(Long orderId);

    /**
     * 通知订单中心，“退货工单审核通过”事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informReturnGoodsWorksheetApprovedEvent(Long orderId);

    /**
     * 通知订单中心，“确认收到退货商品”事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informReturnGoodsReceivedEvent(Long orderId);

    /**
     * 通知订单中心，退货入库审核通过事件发生了
     *
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informReturnGoodsInputOrderApprovedEvent(Long orderId);

    /**
     * 通知订单中心，“完成退款事件“发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informRefundFinishedEvent(Long orderId);

    /**
     * 通知订单中心，‘支付订单成功了’
     * @param orderInfoId 订单id
     * @return 处理结果
     */
    Boolean informPayOrderSucceed(Long orderInfoId);

    /**
     * 根据id查询订单数据
     * @param orderId 订单数据
     * @return 查询结果
     */
    OrderInfoDTO getOrderById(Long orderId);
}
